خرید بک لینک
از لحاظ تاریخی، Blazor به همراه دو حالت اصلی است: - Blazor Server، که در آن یک اتصال SignalR، بین مرورگر کاربر و سرور، برقرار شده و سرور حالات مختلف این جلسهی کاری را مدیریت میکند. آغاز این حالت، بسیار سریع است؛ اما وجود اتصال دائم SignalR در آن ضروری است. نیاز به وجود این اتصال دائم، با تعداد بالای کاربر میتواند کارآیی سرور را تحت تاثیر قرار دهد. - Blazor WASM: در این حالت کل برنامهی Blazor، درون مرورگر کاربر اجرا میشود و برای اینکار الزاما نیازی به سرور ندارد؛ اما آغاز اولیهی آن به علت نیاز به بارگذاری کل برنامه درون مرورگر کاربر، اندکی کند است. اتصال این روش با سرور، از طریق روشهای متداول کار با Web API صورت میگیرد و نیازی به اتصال دائم SignalR را ندارد. دات نت 8، دو تغییر اساسی را در اینجا ارائه میدهد: - در اینجا حالت جدیدی به نام SSR یا Static Server Rendering ارائه شدهاست (به آن Server-side rendering هم میگویند). در این حالت نه WASM ای درون مرورگر کاربر اجرا میشود و نه اتصال دائم SignalR ای برای کار با آن نیاز است! در این حالت برنامه تقریبا همانند یک MVC Razor application سنتی کار میکند؛ یعنی سرور، کار رندر نهایی HTML قابل ارائهی به کاربر را انجام داده و آنرا به سمت مرورگر، برای نمایش ارسال میکند و همچنین سرور، هیچ حالتی را هم از برنامه ذخیره نمیکند و بهعلاوه، کلاینت نیز نیازی به دریافت کل برنامه را در ابتدای کار ندارد (هم آغاز و نمایش سریعی را دارد و هم نیاز به منابع کمتری را در سمت سرور برای اجرا دارد). - تغییر مهم دیگری که در دات نت 8 صورت گرفته، امکان ترکیب کردن حالتهای مختلف رندر صفحات، در برنامههای Blazor است. یعنی میتوان یک صفحهی

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

در قسمت قبل، حالتهای مختلف رندر کامپوننتها را در Blazor 8x معرفی کردیم. در این قسمت میخواهیم نحوهی کارکرد دو حالت InteractiveServer و StreamRendering را به همراه چند مثال بررسی کنیم. معرفی قالبهای جدید شروع پروژههای Blazor در دات نت 8 پس از نصب SDK دات نت 8، دیگر خبری از قالبهای قدیمی پروژههای blazor server و blazor wasm نیست! در اینجا در ابتدا باید مشخص کرد که سطح تعاملی برنامه در چه حدی است. در ادامه 4 روش شروع پروژههای Blazor 8x را مشاهده میکنید که توسط پرچم interactivity--، نوع رندر برنامه در آنها مشخص شدهاست: اجرای قسمتهای تعاملی برنامه بر روی سرور: dotnet new blazor --interactivity Server اجرای قسمتهای تعاملی برنامه در مرورگر، توسط فناوری وباسمبلی: dotnet new blazor --interactivity WebAssembly برای اجرای قسمتهای تعاملی برنامه، ابتدا حالت Server فعالسازی میشود تا فایلهای WebAssembly دریافت شوند، سپس فقط از WebAssembly استفاده میکند: dotnet new blazor --interactivity Auto فقط از حالت SSR یا همان static server rendering استفاده میشود (این نوع برنامهها تعاملی نیستند): dotnet new blazor --interactivity None سایر گزینهها را با اجرای دستور dotnet new blazor --help میتوانید مشاهده کنید. نکتهی مهم! در قالبهای آمادهی Blazor 8x، حالت SSR، پیشفرض است. هرچند در تمام پروژههای فوق، انتخاب حالتهای مختلف رندر را مشاهده میکنید، اما این انتخابها صرفا دو مقصود مهم را دنبال میکنند: الف) تنظیم فایل Program.cs برنامه جهت افزودن وابستگیهای مورد نیاز، به صورت خودکار. ب) ایجاد پروژهی کلاینت (علاوه بر پروژهی

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

در قسمت قبل، با نحوهی رندر سمت سرور و روش فعالسازی قابلیتهای تعاملی در این حالت، آشنا شدیم. از این نکات میتوان جهت ارتقاء ساختار پروژههای قدیمی Blazor Server به Blazor Server 8x استفاده کرد. البته همانطور که پیشتر نیز عنوان شد، در دات نت 8 دیگر خبری از قالبهای قدیمی پروژههای blazor server و blazor wasm نیست و اگر دقیقا همین موارد مدنظر هستند، آنها را میتوان با تنظیم سطح رندر و میزان تعاملی که مدنظر است، شبیه سازی کرد و یا حتی هر دو را هم با هم در یک پروژه داشت. 1) بهروز رسانی شماره نگارش داتنت اولین قدم در جهت ارتقاء پروژههای قدیمی، تغییر شماره نگارش TargetFramework موجود در فایل csproj. به net8.0 است. پس از اینکار نیاز است تمام بستههای نیوگت موجود را نیز به نگارشهای جدیدتر آنها ارتقاء دهید. 2) فعالسازی حالت SSR تعاملی سمت سرور پایهی تمام تغییرات انجام شدهی در Blazor 8x، قابلیت SSR است و تمام امکانات دیگر برفراز آن اجرا میشوند. به همین جهت پس از ارتقاء شماره نگارش داتنت، نیاز است SSR را فعال کنیم و برای اینکار باید به هاست ASP.NET Core بگوئیم که درخواستهای رسیده را به کامپوننتهای Razor هدایت کند. بنابراین، به فایل Program.cs مراجعه کرده و دو تغییر زیر را به آن اعمال کنید: // ... builder.Services.AddRazorComponents().AddInteractiveServerComponents(); // ... app.MapRazorComponents<App>().AddInteractiveServerRenderMode(); یک نمونهی کامل از فایل Program.cs را در قسمت قبل مشاهده کردید و یا حتی میتوانید دستور dotnet new blazor --interactivity Server را جهت ساخت یک پروژهی آزمایشی جدید بر اساس SDK دات نت 8 و ایده گیری از

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

در قسمت قبل مشاهده کردیم که چگونه میتوان کل برنامه را به صورت سراسری، تعاملی کرد تا بتوان توسط آن، Blazor Server سنتی را شبیه سازی نمود؛ اما ... آیا واقعا نیاز است چنین کاری را انجام دهیم؟! چون در این صورت از قابلیتهای جدید SSR به همراه Blazor 8x محروم میشویم. اگر کل قابلیتهای تعاملی مورد نیاز ما در حد یک فرم و ارسال اطلاعات آن به سمت سرور است، میتوان در Blazor 8x هنوز هم در همان حالت SSR قرار گرفت و از فرمهای جدید تعاملی آن استفاده کرد تا برای پردازش چنین مواردی، نیازی به برقراری اتصال دائم SignalR نباشد. جزئیات نحوهی کار با اینگونه فرمها را در ادامه بررسی میکنیم. امکان تعریف HTML Forms استاندارد در Blazor 8x فرمهای استاندارد HTML، پیش از ظهور جاوااسکریپت و SPAها وجود داشتند (دقیقا همان زمانیکه که فقط مفهوم SSR وجود خارجی داشت) و هنوز هم جزء مهمی از اغلب برنامههای وب را تشکیل میدهند. با ارائهی دات نت 8 و قابلیت server side rendering آن، کامپوننتهای برنامه، فقط یکبار در سمت سرور رندر شده و HTML سادهی آنها به سمت مرورگر کاربر بازگشت داده میشود. در این حالت، فرمهای استاندارد HTML، امکان دریافت ورودیهای کاربر و ارسال دادههای آنها را به سمت سرور میسر میکنند (چون دیگر خبری از اتصال دائم SignalR نیست و باید اطلاعات را به همان نحو استاندارد پروتکل HTTP، به سمت سرور Post کرد). در دات نت 8، دو راهحل برای کار با فرمها در برنامههای Blazor وجود دارد: استفاده از EditForm خود Blazor و یا استفاده از HTML forms استاندارد و ساده، به همان نحوی که بوده و هست. روش کار با EditForm در برنامههای Blazor SSR البته ما قصد استفاده از فرمهای سادهی HTML

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

در Blazor 8x میتوان صفحات SSR ای را به همراه Blazor server islands و یا Blazor WASM islands داشت؛ یعنی یک کامپوننت Blazor Server که داخل یک صفحهی معمولی SSR قرار گرفته و با سرور، ارتباط SiganlR برقرار میکند و یا یک کامپوننت Blazor WASM که در قسمتی از صفحهی SSR درج شده و درون مرورگر کاربر اجرا میشود. به هر کدام از اینها یک «جزیرهی تعاملی» گفته میشود (interactive island). در این قسمت، نکات مرتبط با جزایر تعاملی Blazor Server را بررسی میکنیم. بررسی یک مثال: تهیه یک برنامهی Blazor 8x برای نمایش لیست محصولات، به همراه جزئیات آنها به لطف وجود SSR در Blazor 8x، میتوان HTML نهایی کامپوننتها و صفحات Blazor را همانند صفحات MVC و یا Razor pages، در سمت سرور تهیه و بازگشت داد. این خروجی در نهایت یک static HTML بیشتر نیست و گاهی از اوقات ما به بیش از یک خروجی ساده HTML ای نیاز داریم. در این مثال که بر اساس قالب dotnet new blazor --interactivity Server تهیه میشود، قصد داریم موارد زیر را پیاده سازی کنیم: - صفحهای که یک لیست محصولات فرضی را نمایش میدهد : بر اساس SSR - صفحهای که جزئیات یک محصول را نمایش میدهد: بر اساس SSR - دکمهای در ذیل قسمت نمایش جزئیات یک محصول، برای دریافت و نمایش لیست محصولات مشابه و مرتبط: بر اساس Blazor server islands یعنی تا جائیکه ممکن است قصد نداریم تمام صفحات و تمام قسمتهای برنامه را با فعالسازی سراسری حالت تعاملی Blazor server که در قسمتهای قبل در مورد آن توضیح داده شد، پیاده سازی کنیم. میخواهیم فقط قسمت کوچکی از این سناریو را که واقعا نیاز به یک چنین قابلیتی را دارد، توسط یک جزیرهی تعاملی Blazor s

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

در قسمت قبل، در حین بررسی رفتار جزیرههای تعاملی Blazor Server، نکتهی زیر را هم دربارهی راهبری صفحات SSR مرور کردیم: « اگر دقت کنید، جابجایی بین صفحات، با استفاده از fetch انجام شده؛ یعنی با اینکه این صفحات در اصل static HTML خالص هستند، اما ... کار full reload صفحه مانند ASP.NET Web forms قدیمی انجام نمیشود (و یا حتی برنامههای MVC و Razor pages) و نمایش صفحات، Ajax ای است و با fetch استاندارد آن صورت میگیرد تا هنوز هم حس و حال SPA بودن برنامه حفظ شود. همچنین اطلاعات DOM کل صفحه را هم بهروز رسانی نمیکند؛ فقط موارد تغییر یافته در اینجا به روز رسانی خواهند شد.» در این قسمت، نکات تکمیلی این قابلیت را که به آن enhanced navigation هم گفته میشود، بررسی میکنیم. روش غیرفعال کردن راهبری بهبودیافته برای بعضی از لینکها ویژگی راهبری بهبودیافته فقط در حین هدایت بین صفحات مختلف یک برنامهی Blazor 8x SSR، فعال است. اگر در این بین، کاربری به یک صفحهی غیر بلیزری هدایت شود، راهبری بهبود یافته شکست خورده و سعی میکند حالت full document load را پیاده سازی و اجرا کند. مشکل اینجاست که در این حالت دو درخواست ارسال میشود: ابتدا حالت راهبری بهبودیافته فعال میشود و در ادامه پس از شکست این راهبری، هدایت مستقیم صورت میگیرد. برای رفع این مشکل میتوان ویژگی جدید data-enhance-nav را با مقدار false، به لینکهای خارجی مدنظر اضافه کرد تا برای این حالتها دیگر ویژگی راهبری بهبودیافته فعال نشود: <a href="/not-blazor" data-enhance-nav="false">A non-Blazor page</a> فعالسازی مدیریت بهبودیافتهی فرمهای SSR در قسمت چهارم این سری با فرمهای جدید SSR مخصو

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

در قسمتهای قبل، نحوهی تعریف جزیرههای تعاملی Blazor Server را به همراه نکات مرتبط با آنها بررسی کردیم. برای مثال مشاهده کردیم که چون Blazor Server و SSR هر دو بر روی سرور اجرا میشوند، از لحاظ دسترسی به اطلاعات و کار با سرویسها، هماهنگی کاملی دارند و میتوان کدهای یکسان و یکدستی را در اینجا بکار گرفت. در Blazor 8x، امکان تعریف جزیرههای تعاملی Blazor WASM نیز وجود دارد که به همراه تعدادی نکتهی ویژه، در مورد نحوهی مدیریت سرویسهای مورد استفادهی در این کامپوننتها است. معرفی برنامهی Blazor WASM این مطلب در این مطلب قصد داریم دقیقا قسمت جزیرهی تعاملی Blazor Server همان برنامهی مطلب قبل را توسط یک جزیرهی تعاملی Blazor WASM بازنویسی کنیم و با نکات و تفاوتهای ویژهی آن آشنا شویم. یعنی زمانیکه صفحهی SSR نمایش جزئیات یک محصول ظاهر میشود، نحوهی رندر و پردازش کامپوننت نمایش محصولات مرتبط و مشابه، اینبار یک جزیرهی تعاملی Blazor WASM باشد. بنابراین قسمت عمدهای از کدهای این دو قسمت یکی است؛ فقط نحوهی دسترسی به سرویسها و محل قرارگیری تعدادی از فایلها، متفاوت خواهد بود. ایجاد یک پروژهی جدید Blazor WASM تعاملی در دات نت 8 بنابراین در ادامه، در ابتدای کار نیاز است یک پوشهی جدید را برای این پروژه، ایجاد کرده و بجای انتخاب interactivity از نوع Server: dotnet new blazor --interactivity Server اینبار برای اجرای در مرورگر توسط فناوری وباسمبلی، نوع WebAssembly را انتخاب کنیم: dotnet new blazor --interactivity WebAssembly در این حالت، Solution ای که ایجاد میشود، به همراه دو پروژهاست (برخلاف پروژههای Blazor Server تعاملی که فقط شامل یک پروژهی سمت

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

این Prerendering است که امکان رندر یک کامپوننت تعاملی را در سمت سرور میسر میکند تا کاربر بتواند پیش از فعال شدن قابلیتهای پیشرفتهی یک کامپوننت، یک حداقل خروجی را از آن مشاهده کند و همچنین وجود آن برای موتورهای جستجو و بهبود SEO بسیار مفید است. اما ... در این بین مشکلی رخ میدهد که نمونهی آنرا در قسمت قبل مشاهده کردیم: آغاز آن دوبار صورت میگیرد؛ یکبار در سمت سرور برای تهیهی یک خروجی SSR و یکبار هم پس از فعال شدن قابلیتهای تعاملی آن در سمت کلاینت. این آغاز دوباره، برای هر دو حالت کامپوننتهای تعاملی Blazor Server و Blazor WASM برقرار است. راهحلهایی از نحوهی مواجه شدن با یک چنین مشکلی را در قسمت قبل بررسی کردیم. راهحل دیگری که در این بین ارائه شده و توسط خود مایکروسافت هم در مثالهای آن مورد استفاده قرار میگیرد، استفاده از سرویس PersistentComponentState است که جزئیات آنرا در این قسمت بررسی خواهیم کرد. بررسی نحوهی عملکرد سرویس PersistentComponentState سرویس PersistentComponentState، در داتنت 6، به Blazor اضافه شد و امکان جدیدی نیست. قسمتی از این مباحث جدید SSR که بهنظر مختص به Blazor 8x هستند، پیشتر هم وجود داشتند؛ تحت عنوان pre-rendering. برای مثال فقط کافی بودن تا در برنامههای Blazor Server قبلی، فایل Host.cshtml_ را به صورت زیر ویرایش کرد تا pre-rendering فعال شود: <component type="typeof(App)" render-mode="ServerPrerendered" /> مشکلی که در این حالت بروز میکرد این بود که متد OnInitializedAsync یک کامپوننت، دوبار فراخوانی میشد؛ یکبار در زمان pre-rendering در سمت سرور، تا HTML استاتیکی برای ارائهی به مرورگر کاربر تولید شود و بار

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

Auto Render Mode، آخرین حالت رندری است که به Blazor 8x اضافه شدهاست. اگر از Blazor Server استفاده کنیم، به یک آغاز سریع در برنامه خواهیم رسید، به همراه مقداری تاخیر جزئی، برای به روز رسانی UI؛ از این جهت که تعاملات صورت گرفته باید از طریق اتصال وبسوکت SignalR به سرور ارسال شده و منتظر نتیجهی نهایی، برای اعمال آن به صفحه شد و یا باید به مقیاس پذیری این اتصالات همزمان با تعداد کاربران بالا هم اندیشید. اگر از Blazor WASM استفاده کنیم، آغاز آن، اندکی کند خواهد بود تا فایلهای فریمورک و برنامه، به درون مرورگر کاربر منتقل شوند. اما پس از آن همهچیز بسیار سریع است؛ از این جهت که تعاملات با DOM، توسط مرورگر و در همان سمت کاربر مدیریت میشود. اما ... چقدر خوب میشد که امکان ترکیب هردوی اینها با هم در یک برنامه وجود میداشت؛ یعنی داشتن یک آغاز سریع، به همراه تعاملات سریع با DOM. به همین جهت Auto Render Mode به Blazor 8x اضافه شدهاست. نحوهی عملکرد حالت رندر تعاملی خودکار در Blazor 8x زمانیکه از قرار است از Auto Render Mode استفاده شود، یعنی در نهایت به سراغ حالت رندر وباسمبلی رفتن؛ اما به شرطیکه که فریمورک، مطمئن شود میتواند تمام فایلهای مرتبط را خیلی سریع و در کمتر از 100 میلیثانیه تامین کند که عموما یک چنین حالتی به معنای از پیش دریافت کردن این فایلها و کش شده بودن آنها در مرورگر است. اما اگر یک چنین تضمینی وجود نداشته باشد، از همان ابتدای کار تصمیم میگیرد که باید کامپوننت را از طریق نگارش Blazor Server آن ارائه دهد، تا آغاز سریعی را سبب شود. در این بین هم در پشت صحنه (یعنی زمانیکه کاربر مشغول به کار با نگارش Blazor Server کامپوننت است)، شروع به دریافت ف

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

رفتار Blazorهای پیش از داتنت 8 در مورد مدیریت حالت پیش از دات نت 8، دو حالت عمده برای توسعهی برنامههای Blazor وجود داشت: Blazor Server و Blazor WASM. در هر دو حالت، طول عمر سیستم تزریق وابستگیهای ایجاد و مدیریت شدهی توسط Blazor، معادل طول عمر برنامهاست. در برنامههای Blazor Server، طول عمر سیستم تزریق وابستگیها، توسط ASP.NET Core قرار گرفتهی بر روی سرور مدیریت شده و نمونههای ایجاد شدهی سرویسهای توسط آن، به ازای هر کاربر متفاوت است. بنابراین اگر طول عمر سرویسی در اینجا به صورت Scoped تعریف شود، این سرویس فقط یکبار در طول عمر برنامه، به ازای یک کاربر جاری برنامه، تولید و نمونه سازی میشود. در این مدل برنامهها، سرویسهایی با طول عمر Singleton، بین تمام کاربران به اشتراک گذاشته میشوند. به همین جهت است که در این نوع برنامهها، مدیریت سرویس Context مخصوص EF-Core نکات خاصی را به همراه دارد. چون اگر بر اساس سیستم پیشفرض تزریق وابستگیها و طول عمر Scoped این سرویس عمل شود، یک Context فقط یکبار بهازای یک کاربر، یکبار نمونه سازی شده و تا پایان طول عمر برنامه، بدون تغییر زنده نگه داشته میشود؛ در حالیکه عموم توسعه دهندگان EF-Core تصور میکنند سرویسهای Scoped، پس از پایان یک درخواست، پایان یافته و Dispose میشوند، اما در اینجا پایان درخواستی نداریم. یک اتصال دائم SignalR را داریم و تا زمانیکه برقرار است، یعنی برنامه زندهاست. بنابراین در برنامههای Blazor Server، سرویسهای Scoped، به ازای هر کاربر، همانند Singleton رفتار میکنند (در سراسر برنامه به ازای یک کاربر در دسترس هستند) و سرویسهایی از اساس Singleton، بین تمام کاربران به اشتراک گذاشته میشوند. در

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

قالبهای پیشفرض Blazor 8x، به همراه قسمت بازنویسی شدهی ASP.NET Core Identity برای Blazor هم هستند که در این قسمت به بررسی نحوهی عملکرد آنها میپردازیم. معرفی قالبهای جدید شروع پروژههای Blazor در دات نت 8 به همراه قسمت Identity در قسمت دوم این سری، با قالبهای جدید شروع پروژههای Blazor 8x آشنا شدیم و هدف ما در آنجا بیشتر بررسی حالتهای مختلف رندر Blazor در دات نت 8 بود. تمام این قالبها به همراه یک سوئیچ دیگر هم به نام auth-- هستند که توسط آن و با مقدار دهی Individual که به معنای Individual accounts است، میتوان کدهای پیشفرض و ابتدایی Identity UI جدید را نیز به قالب در حال ایجاد، به صورت خودکار اضافه کرد؛ یعنی به صورت زیر: اجرای قسمتهای تعاملی برنامه بر روی سرور؛ به همراه کدهای Identity: dotnet new blazor --interactivity Server --auth Individual اجرای قسمتهای تعاملی برنامه در مرورگر، توسط فناوری وباسمبلی؛ به همراه کدهای Identity: dotnet new blazor --interactivity WebAssembly --auth Individual برای اجرای قسمتهای تعاملی برنامه، ابتدا حالت Server فعالسازی میشود تا فایلهای WebAssembly دریافت شوند، سپس فقط از WebAssembly استفاده میکند؛ به همراه کدهای Identity: dotnet new blazor --interactivity Auto --auth Individual فقط از حالت SSR یا همان static server rendering استفاده میشود (این نوع برنامهها تعاملی نیستند)؛ به همراه کدهای Identity: dotnet new blazor --interactivity None --auth Individual  و یا توسط پرچم all-interactive--، که interactive render mode را در ریشهی برنامه قرار میدهد؛ به همراه کدهای I

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

در قسمت قبل، با نامهایی مانند IdentityRevalidatingAuthenticationStateProvider و PersistingRevalidatingAuthenticationStateProvider آشنا شدیم. در این قسمت جزئیات بیشتری از این کلاسها را بررسی میکنیم. نحوهی پیاده سازی AuthenticationStateProvider در پروژههای Blazor Server 8x در کدهای زیر، ساختار کلی کلاس AuthenticationStateProvider ارائه شدهی توسط قالب رسمی پروژههای Blazor Server به همراه مباحث اعتبارسنجی مبتنی بر ASP.NET Core Identity را مشاهده میکنید: public class IdentityRevalidatingAuthenticationStateProvider : RevalidatingServerAuthenticationStateProvider { protected override TimeSpan RevalidationInterval => TimeSpan.FromMinutes(30); protected override async Task<bool> ValidateAuthenticationStateAsync( AuthenticationState authenticationState, CancellationToken cancellationToken) { // ... } } کار این کلاس، پیاده سازی کلاس پایهی RevalidatingServerAuthenticationStateProvider است. این کلاس پایه، چیزی نیست بجز یک کلاس پیاده سازی کنندهی AuthenticationStateProvider که در آن توسط حلقهای، کار یک تایمر را پیاده سازی کردهاند که برای مثال در اینجا هر نیم ساعت یکبار، متد ValidateAuthenticationStateAsync را صدا میزند. برای مثال در اینجا (یعنی کلاس بازنویسی کنندهی متد ValidateAuthenticationStateAsync که توسط تایمر کلاس پایه فراخوانی میشود) اعتبار security stamp کاربر جاری، هر نیم ساعت یکبار بررسی میشود. اگر فاقد اعتبار بود، کلاس پایهی استفاده شده، سبب LogOut خودکار این کاربر میشود. نحوهی پیاده سازی A

برچسب: نویسنده: دانلودی تاريخ: جمعه 26 آبان 1402 ساعت: 20:49

1513 بازدید دسته بندی: IELTS Assessed Samples - Writing منتشر شده در 15 آبان 1402 زمان مطالعه: 1 دقیقه 0 نظر به روز شده در 15 آبان 1402 نمونه تصحیح شده رایتینگ آیلتس تسک دو توسط آکادمی اکسیر – شماره 42 – نمره 6.5 داوطلب گرامی، زبان آموز اکسیری عزیز سلام،در زیر یک نمونه رایتینگ تصحیح شده به همراه جزئیات برای شما گذاشته شده است. حتما به نمره تک تک معیارها مثل LR و GRA دقت کنید.اگر نمیدانید بر چه اساسی رایتینگ آیلتس تصحیح میشود، می توانید لینک زیر را ببینید. نمونه رایتینگ نوشته شده توسط متقاضیان اکسیر آیلتس جدول نمرات این نمونه تصحیح شده رایتینگ آیلتس توسط آکادمی اکسیر توضیحات شفاهی و تحلیل کامل نمونه تصحیح شده رایتینگ آیلتس توسط آکادمی اکسیر https://dl.exiracademy.org/WebsiteMaterial/Writing%20Sample%20Audio%20Files/WT2/%D8%B1%D8%A7%DB%8C%D8%AA%DB%8C%D9%86%DA%AF%2B%D8%AA%D8%B3%DA%A9%2B%DB%B2%2B%D8%A7%DA%A9%D8%B3%DB%8C%D8%B1%2B%D8%A2%DB%8C%D9%84%D8%AA%D8%B3%2B%D9%84%2B%D8%B4%2B%DB%B5.ogg لینک های مفید: نمونه های تصحیح شده رایتینگ آیلتس نمونه های تصحیح شده اسپیکینگ آیلتس آموزش رایگان آیلتس – Lea IELTS for Free پنالتی های رایتینگ آیلتس شرکت در ماک آیلتس اکسیر شرکت در کلاس های گروهی اکسیر آیلتس شرکت در دوره آفلاین اکسیر آیلتس تهیه پکیج جامع اکسیر آیلتس شرکت در تعیین سطح زبان عمومی درخواست مشاوره آیلتس تماس با اکسیر 4.7/

برچسب: نویسنده: دانلودی تاريخ: سه شنبه 23 آبان 1402 ساعت: 17:57

1493 بازدید دسته بندی: IELTS Assessed Samples - Writing منتشر شده در 7 آبان 1402 زمان مطالعه: 1 دقیقه 0 نظر به روز شده در 7 آبان 1402 نمونه تصحیح شده رایتینگ آیلتس تسک دو توسط آکادمی اکسیر – شماره 41 – نمره 6.5 داوطلب گرامی، زبان آموز اکسیری عزیز سلام،در زیر یک نمونه رایتینگ تصحیح شده به همراه جزئیات برای شما گذاشته شده است. حتما به نمره تک تک معیارها مثل LR و GRA دقت کنید.اگر نمیدانید بر چه اساسی رایتینگ آیلتس تصحیح میشود، می توانید لینک زیر را ببینید. نمونه رایتینگ نوشته شده توسط متقاضیان اکسیر آیلتس جدول نمرات این نمونه تصحیح شده رایتینگ آیلتس توسط آکادمی اکسیر توضیحات شفاهی و تحلیل کامل نمونه تصحیح شده رایتینگ آیلتس توسط آکادمی اکسیر https://dl.exiracademy.org/WebsiteMaterial/Writing%20Sample%20Audio%20Files/WT2/%D8%B1%D8%A7%DB%8C%D8%AA%DB%8C%D9%86%DA%AF%2B%D8%AA%D8%B3%DA%A9%2B%DB%B2%2B%D8%A7%DA%A9%D8%B3%DB%8C%D8%B1%2B%D8%A2%DB%8C%D9%84%D8%AA%D8%B3%2B%D8%AF%2B%D8%A7%2B%DB%B5.ogg لینک های مفید: نمونه های تصحیح شده رایتینگ آیلتس نمونه های تصحیح شده اسپیکینگ آیلتس آموزش رایگان آیلتس – Lea IELTS for Free پنالتی های رایتینگ آیلتس شرکت در ماک آیلتس اکسیر شرکت در کلاس های گروهی اکسیر آیلتس شرکت در دوره آفلاین اکسیر آیلتس تهیه پکیج جامع اکسیر آیلتس شرکت در تعیین سطح زبان عمومی درخواست مشاوره آیلتس تماس با اکسیر 4.7/5 -

برچسب: نویسنده: دانلودی تاريخ: يکشنبه 14 آبان 1402 ساعت: 20:48

رنگ کردن مو بدون اکسیدان در خانه | با جایگزینهایی مناسب برای اکسیدان آشنا شوید تغییر رنگ موها فرایندی طولانی و هزینهبر است. به همین دلیل بسیاری از خانمها این کار را در خانه انجام میدهند. از سوی دیگر ترکیبات شیمیایی بهکاررفته در اکسیدانها، حساسیتهایی را برای برخی از بانوان ایجاد میکند. رنگ کردن مو بدون اکسیدان در خانه روش مناسبی است که خانمهای حساس به مواد شیمیایی آن را به کار میگیرند. بااینحال عدم آشنایی با روش اعمال این رنگها و ماندگاری کم رنگهای بدون اکسیدان، چالشهای پیش روی خانمها برای رنگ کردن مو در خانه هستند. بدون استفاده از اکسیدان نمیتوان از رنگهای دائمی استفاده کرد بگذارید در همین ابتدا خیالتان را راحت کنیم. نمیتوان بدون اکسیدان از رنگهای دائمی استفاده کرد. فرمولاسیون این رنگها بهگونهای است که برای ماندگاری بیشتر و باز کردن کوتیکولهای مو، باید با اکسیدان ترکیب شوند. در غیر این صورت بستر مناسب برای ورود رنگدانهها به ساقه مو فراهم نمیشود. رنگ کردن مو بدون اکسیدان فقط برای رنگآمیزی موقت موها کاربرد دارد و با شستوشو این رنگها از بین میروند. شما میتوانید برای شناخت کامل تکنیکهای رنگ مو، به صفحه آموزش رنگ مو در سایت آموزشگاه آرایشگری دوبانو مراجعه کنید. جایگزینهایی مناسب برای رنگ کردن مو بدون اکسیدان در خانه برای فرایند رنگ کردن مو در خانه بدون نیاز به اکسیدان، باید روشهای موقتی را انتخاب کرد. اکسیدان با افزایش سرعت رنگپذیری موها، به ریشه آنها نفوذ میکند. درصورتیکه برای رنگ کردن مو بدون نیاز به اکسیدان باید روشهایی را به کار گرفت که رنگ در سطح تار مو باقی بماند. به همین دلیل از برخی روشها برای این کار استفاده میکنند. در ادامه

برچسب: نویسنده: دانلودی تاريخ: يکشنبه 14 آبان 1402 ساعت: 20:48

تجربه خدمات جابهجایی بار با معتبرترین باربری'>باربری نسیم'>نسیم شهر نسیم شهر یکی از شهرستانهای حومه تهران است که تراکم بالای جمعیت در آن، تقاضا برای خدمات باربری را افزایش داده است. به همین دلیل مجموعههای باربری متعددی در این منطقه فعالیت میکنند. بسیاری از مستاجران و صاحبان کسبوکارها برای انتقال بارها از این مراکز کمک میگیرند. بااینحال انتخاب بهترین مجموعه از میان تعداد بالایی از باربریها چالشی مهم برای ساکنین این منطقه بهشمار میآید. شما میتوانید با شناخت خدمات باربری مجموعههای باربری در نسیم شهر، بهترین مرکز را انتخاب کنید. پشتیبانی ارسال بار از نسیم شهر به تمام نقاط کشور در کنار تراکم بالای جمعیت در نسیم شهر، این شهرستان میزبان تعداد زیادی از کارخانههای صنعتی و شرکتهای تجاری میباشد. همین موضوع تنوع مقاصد باربری در نسیم شهر را افزایش میدهد. مجموعههای باربری نسیم شهر با پشتیبانی از سرویسهایی فعال برای خدماتشان، به سرتاسر استانهای کشور، خدمات حمل بار را ارائه میکنند. باربریهای نسیم شهر باتکیهبر ناوگان باری مجهز و بهرهمندی از تجارب بالای رانندگان در شناخت جادههای اصلی کشور، فرایند انتقال بار از نسیم شهر به استانهای مختلف را با اطمینان کامل انجام میدهند. بر همین اساس همهروزه محمولههای فراوانی از نسیم شهر به شهرستانها، بازارچههای بزرگ، مناطق صعبالعبور و … ارسال میشود. شما میتوانید برای بهرهمندی از خدمات بهترین باربری نسیم شهر، از خدمات اتوبار بارتو فرشاد ترابر حامد استفاده کنید. خدمات معتبرترین مجموعه حمل بار نسیم شهر مهمترین عامل انتخاب بهترین باربری، خدماتی است که مجموعههای حمل بار به مشتریان عرضه میکنند. این خدمات ارتباط مستقیمی با رضایت صاحبان بار دا

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 3 آبان 1402 ساعت: 18:57

صفحه بندی

خبرنامه